/**
 * 对象或数组克隆
 * @param {*} target  原始数据
 */
export function clone (target) {
	if (typeof target === 'object') {
		let cloneTarget = Array.isArray(target) ? [] : {}
		for (const key in target) {
			cloneTarget[key] = clone(target[key])
		}
		return cloneTarget
	}
	else {
		return target
	}
}
/**
 * 数组根据属性值分组
 * @param {*} arr 对象数组
 * @param {*} fn 属性值
 */
export function groupBy (arr, fn) {
	var groups = {}
	array.forEach(function (o) {
		var group = JSON.stringify(f(o))
		groups[group] = groups[group] || []
		groups[group].push(o)
	})
	return Object.keys(groups).map(function (group) {
		return groups[group]
	})
}
/**
	 * 比较
	 * @param {*} p
	 */
export function compareArray (p) {
	//这是比较函数
	return function (m, n) {
		var a = m[p]
		var b = n[p]
		return a - b //升序
	}
}
/**
 * 数组对象根据属性值求和
 * @param {*} 属性
 */
export function objSum (arr, ...param) {
	var temp = {}
	arr.forEach(function (item, index) {
		for (var k in item) {
			if (param.indexOf(k) >= 0) {
				if (typeof item[k] == 'string') {
					item[k] = item[k] * 1
				}
				if (temp[k]) {
					temp[k] += item[k]
				}
				else {
					temp[k] = item[k]
				}
			}
		}
	})
	return temp
}
/**
 * 数据转换
 * @param {*key_gb} GB
 * @param {*key_count} GB
 */
export function formatData (data, key_gb, key_count) {
	if (Array.isArray(data)) {
		if (key_gb && key_count) {
			data.map((item) => {
				if (item[key_gb] / 1024 > 1) {
					item.size = (item[key_gb] / 1024).toFixed(2) + 'TB'
				}
				else {
					item.size = (item[key_gb])
				}
				if (item[key_count] > 10000) {
					item.count = (item[key_count] / 10000).toFixed(2) + '万'
				}
				else {
					item.count = (item[key_count])
				}
				item.result = item.count + '/' + item.size
				// console.log(item)
			})
			return data
		}
		else {
			alert('参数为空')
		}
	}
}
/**
 *
 * @param {*} space 时间间隔 默认60分钟
 * 生成时间间隔 00:00 01:00
 */
export function getSpaceTime (space = 60) {
	let hour = 0
	let min = '00'
	let spaceArr = []
	space = parseInt(space)
	while (hour < 24) {
		spaceArr.push({ hour: hour, min: min })
		min += space > 0 ? space : -space
		if (min >= 60) {
			hour++
			min = '00'
		}
	}
	let timeList = []
	spaceArr.map((time) => {
		if (time.hour < 10) {
			time.hour = '0' + time.hour
		}
		timeList.push(time.hour + ':' + time.min)
	})

	return timeList
}
